from algorithms.algorithm import Algorithm
from problems.problem import Problem


class Template(Algorithm):
    """
    label:页面显示的参数名字
    name:算法内部的名字
    type: number | select ：number为数字类型，select为下拉框类型
    description ：参数描述
    step :在页面中的更新步长
    defaultValue :默认值
    options ：下拉框数值
    {
        label：页面显示内容
        value：算法内部使用数值
    }
    """
    parameters = [
        {'label': 'step', 'name': 'step', 'type': 'number', 'description': 'step size', 'step': 0.01,
         'defaultValue': 0.1},
        {
            'label': 'type', 'name': 'type', 'type': 'select', 'description': '聚合函数', 'defaultValue': 4,
            "options": [
                {'label': "PBI approach", "value": 1},
                {'label': "Tchebycheff approach", "value": 2},
                {'label': "Tchebycheff norm", "value": 3},
                {'label': "Modified Tchebycheff", "value": 4}]
        }
    ]

    def __init__(self, problem: Problem,
                 pop_size: int,
                 kwargs,
                 ):
        super().__init__(pop_size, problem, kwargs)

    def each_iteration(self):
        """
        定义算法主循环
        :return:
        """
        pass
